package com.yc.cloud.admin.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 告警事件记录表 视图对象
 *
 * @author kinggu
 * @since 2025-07-16
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "AlarmRecordVo", description = "告警事件记录表视图对象")
public class AlarmRecordVo {

    @ApiModelProperty(value = "ID")
    private Long id;

    @ApiModelProperty(value = "告警唯一标识符 (UUID或业务ID)")
    private String alarmUid;
    
    @ApiModelProperty(value = "关联算法ID (alg_algorithm.id)，代表告警类型")
    private Long algorithmId;
    
    @ApiModelProperty(value = "告警名称 (冗余自算法名称, 如: 明火, 抽烟)")
    private String alarmName;
    
    @ApiModelProperty(value = "关联硬件设备ID (hw_device.id)")
    private Long deviceId;
    
    @ApiModelProperty(value = "设备序列号(SN)")
    private String deviceSn;

    @ApiModelProperty(value = "设备名称")
    private String deviceName;

    @ApiModelProperty(value = "设备位置 (冗余字段, 便于查询)")
    private String deviceLocation;
    
    @ApiModelProperty(value = "告警发生时间")
    private LocalDateTime alarmTime;
    
    @ApiModelProperty(value = "告警原始图片文件ID")
    private String alarmImageFileId;
    
    @ApiModelProperty(value = "告警原始图片URL（前端展示用）")
    private String alarmImageUrl;
    
    @ApiModelProperty(value = "带有检测框标记的告警图片文件ID")
    private String alarmMarkedImageFileId;
    
    @ApiModelProperty(value = "带有检测框标记的告警图片URL（前端展示用）")
    private String alarmMarkedImageUrl;
    
    @ApiModelProperty(value = "告警视频片段文件ID")
    private String alarmVideoFileId;
    
    @ApiModelProperty(value = "告警视频片段URL（前端展示用）")
    private String alarmVideoUrl;
    
    @ApiModelProperty(value = "处理状态: 0-待处理, 1-处理中, 2-已关闭, 3-误报")
    private Byte status;
    
    @ApiModelProperty(value = "处理人ID (ums_admin.id)")
    private Long handlerId;
    
    @ApiModelProperty(value = "处理完成时间")
    private LocalDateTime handleTime;
    
    @ApiModelProperty(value = "处理结果描述")
    private String handleResult;
    
    @ApiModelProperty(value = "目标检测位置信息列表")
    private List<DetectionPositionVo> detectionPositions;
} 